package com.crm.system.service.finishOrderProductManager;

import com.alibaba.fastjson.JSONObject;
import com.crm.common.model.DhPageInfo;
import com.crm.model.entity.finishOrderProduct.FinishOrderProduct;
import com.crm.model.qo.finishOrderProductManager.AnewSendFinishProductQO;
import com.crm.model.qo.finishOrderProductManager.FinishOrderProductQO;
import com.crm.model.vo.finishOrderProduct.*;

import java.text.ParseException;
import java.util.List;

/**
 * @Author:chaifuyou
 * @Date: 2021/7/30 14:33
 */
public interface FinishOrderProductService {

    /**
     * 查询完成订单的产品
     * @param pageIndex
     * @param pageSize
     * @param sortName
     * @param sortOrder
     * @return
     */
    DhPageInfo<FinishOrderProductVO> selectFinishOrderProductList(Integer pageIndex, Integer pageSize, String sortName, String sortOrder,FinishOrderProductQO qo);

    /**
     * 修改完成订单的产品信息
     * @param finishOrderProduct
     */
    Boolean updateFinishOrderProduct(FinishOrderProduct finishOrderProduct);

    /**
     * 查询未发放提成的产品
     * @return
     */
    List<ExportFinishOrderProductVO> selectExportFinishOrderProduct(FinishOrderProductQO qo);

    /**
     * 导入产品提成发放
     * @param list
     * @return
     */
    JSONObject importOrderProductRoyalty(List<ExportFinishOrderProductVO> list);

    /**
     * 补发产品
     * @param orderId
     */
    void anewSendFinishProduct(String orderId) throws ParseException;

    /**
     * 查询需要补发产品的信息
     * @param pageIndex
     * @param pageSize
     * @param sortName
     * @param sortOrder
     * @return
     */
    DhPageInfo<AnewSendFinishProductVO> selectAnewSendFinishProduct(AnewSendFinishProductQO qo, Integer pageIndex, Integer pageSize, String sortName, String sortOrder);

    /**
     * 查询订单下产品
     * @param orderId
     * @param pageIndex
     * @param pageSize
     * @return
     */
    DhPageInfo<FinishOrderProduct> selectFinishProduct(String orderId, Integer pageIndex, Integer pageSize);

    /**
     * 计算历史数据，业绩
     */
    void anewCountRoyalty();

    void testFinish();

    /**
     * 同步finish表合同编号订单编号客户名称
     * @return
     */
    void synOrderNumber();

    /**
     * 拆分历史合作合同产品
     */
    void partCooperationContractProduct();

    /**
     * 通过finishId查询finsh产品数据
     * @param finishOrderProductId 订单完成产品id
     * @return
     */
    FinishOrderProduct selectFinishOrderProductById(String finishOrderProductId);

    /**
     * 查询订单下的finish表数据（不含赠品）
     * @param orderId
     * @return
     */
    DhPageInfo<FinishOrderProductVO> selectOrderFinishProduct(String orderId,Integer pageIndex,Integer pageSize);

    /**
     * 查询余额支付的订单下的产品（不含赠品）
     * @param customerId
     * @param pageIndex
     * @param pageSize
     * @return
     */
    DhPageInfo<FinishOrderProductVO> selectBalanceOrderFinishProduct(String customerId, Integer pageIndex, Integer pageSize);

    /**
     * 同步旧订单产品号
     * @return
     */
    void updateOldFinishProductNum();


    void selectFinishProductNum(String orderId);

    /**
     * 导出opp客户购买产品
     * @param list
     * @return
     */
    List<ExportOppFinishProductVO> exportOppCustomerFinishProduct(List<ImportOppFinishProductVO> list);
}
